<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Alterar_Senha extends CI_Controller {

	/* Layout utilizado pela pagina. */
	public $layout = 'default_admin';
	
	/* Titulo da Pagina. */
	public $title = CLIENTE;
	
	/* Menu do sistema*/
	public $menuTopo = '';
	
	/* Menu do sistema*/
	public $menuLateral = '';
	
	/* Caminho do pão do sistema */
	public $caminhoPao = '';
	
	/* css utilizado pela pagina. */
	public $css = array('admin/bootstrap', 'admin/animate', 'admin/style', 'plugins/waitMe/waitMe' );
	
	/* Js utilizado pela pagina. */
	public $js = array('plugins/jquery/jquery-2.1.4', 'admin/bootstrap', 'plugins/metisMenu/jquery.metisMenu', 'plugins/slimscroll/jquery.slimscroll.min', 'admin/principal', 'plugins/pace/pace.min', 'plugins/jquery-cookie/jquery.cookie', 'plugins/waitMe/waitMe');
	
	public function __construct()
	{
		parent::__construct();
		//Verifica se o usuário está logado
		usuarioLogado($this->session->userdata('logged'));
		
		$this->load->model('Usuario_Model', 'usuario');
		$this->load->model('Senha_Model', 'senha');	
		
		//Montando menu dinâmico
		$this->load->library('Menu_Lib', 'menu_lib');
		$this->menuTopo = $this->menu_lib->menuTopo();
		$this->menuLateral = $this->menu_lib->menuLateral(null);
		$this->caminhoPao = $this->menu_lib->caminhoPao(null, "Alterar Senha", null);
		
		include_once 'app/enum/EnumTipoSenha.php';
	}
	
	public function index()	{					
		try {
				array_push($this->js, 'plugins/formValidation/formValidation', 'plugins/framework/bootstrap', 'admin/alterar_senha');
				array_push($this->css, 'plugins/formValidation/formValidation');
				
				$this->load->view('admin/alterar_senha');
				
		}catch (Exception $e){
			echo ($e->getMessage());
		}
		
	}
	
	public function alterarSenha(){
		try {
			
			$this->layout = "";
			
			$retornoJson = false;
			$tipoMensagem = "";
			$mensagem = "";
			
			//Pegando dados do form
			$senhaAtual = trim($this->input->post('senhaAtual'));
			$senhaNova = trim($this->input->post('senhaNova'));
			
			$idUsuario = decrypt(trim($this->session->userdata('idUsuario')));
			
			//Iniciando transação
			$this->db->trans_begin();
			
			//Obtendo senha atual do usuário
			$senha = $this->senha->obterSenhaPorUsuario($idUsuario, md5($senhaAtual));
			
			if (!empty($senha)){
				
				//Inativando a senha antiga
				$registroAntigo = null;
				$registroAntigo['dtVigenciaFim'] = date("Y-m-d H:i:s");
				
				if($this->senha->alterar($registroAntigo, $senha[0]->idSenha)){
					$registroNovo = null;
					$registroNovo['idUsuario'] = $idUsuario;
					$registroNovo['senha'] = md5 ( trim($senhaNova) );
					$registroNovo['dtVigenciaIni'] = date("Y-m-d H:i:s");
					$registroNovo['dtVigenciaFim'] = null;
					$registroNovo['tipoSenha'] = EnumTipoSenha::getCodigo(EnumTipoSenha::ALTERACAO);
					
					$idSenhaNova = $this->senha->inserir($registroNovo);
						
					//Se inseriu a nova senha
					if (!empty($idSenhaNova) && $idSenhaNova != false){
						$retornoJson = true;
						$tipoMensagem = "alert-success";
						$mensagem = "Alterada com sucesso!";
					}
				}
				
			}else{
				throw new Exception('Senha atual não correponde com a sua senha cadastrada!');
			}
			
			if ($retornoJson){
				$this->db->trans_commit();
			}else{
				$this->db->trans_rollback();
			}
				
			$json = null;
			$json['sucesso'] = $retornoJson;
			$json['tipoMensagem'] = $tipoMensagem;
			$json['mensagem'] = $mensagem;
			
			echo json_encode($json);
			
		} catch (Exception $e){
			$this->db->trans_rollback();
			
			$json['sucesso'] = false;
			$json['tipoMensagem'] = "alert-danger";
			$json['mensagem'] = $e->getMessage();
			
			echo json_encode($json);
		}
	}
	
}